/////////////////////////////////////////////////////////////////////////////
//	$File: $
//	$Revision: $
//	$Author: $
//	$DateTime: $
//	First Author: buggy

#include	<stdio.h>

#include	<QDebug>

#include	"tidyphoto.h"
#include	"tidyphotocmd.h"
#include	"tidyphotogui.h"
#include	"tidyphotoconfig.h"


//////////////////////////////////////////////////////////////////////
//	TidyPhoto Main Class
TidyPhoto*	TidyPhoto::_instance	= NULL;


////////////////////////////////////////////////////////////////
//	TidyPhoto::Exec
int TidyPhoto::Exec(int argc, char* argv[])
{
	TidyPhotoConfig*	config	= NULL;


	if (NULL != _instance)
	{
		return -1;
	}

	config	= TidyPhotoConfig::ParseCommandLine(argc, argv);
	if (NULL == config)
	{
		return -1;
	}

	if (config->IsGui())
		_instance	= new TidyPhotoGui(config, argc, argv);
	else
		_instance	= new TidyPhotoCmd(config, argc, argv);

	if (NULL == _instance)
	{
		return -1;
	}

	if (false == _instance->initialize())
	{
		delete _instance;
		_instance	= NULL;
		return -1;
	}

	config->Dump();

	return _instance->exec();
}



////////////////////////////////////////////////////////////////
//	Constructor
TidyPhoto::TidyPhoto(TidyPhotoConfig* config)
	: _config(config)
{
}


////////////////////////////////////////////////////////////////
//	Destructor
TidyPhoto::~TidyPhoto()
{
	if (_config)
	{
		delete _config;
		_config	= NULL;
	}
}



////////////////////////////////////////////////////////////////
//	TidyFiles
bool TidyPhoto::TidyFiles()
{
	qDebug("Tidy...");
	/*
	bool	init	= false;

	if (NULL != _app)
	{
		fprintf(stderr, "%s: fatal error in initialzing.\n", argv[0]);
		return false;
	}

	if (1 == argc)
	{
		//	gui version
		_app	= new QApplication(argc, argv);
		if (_app)
			init	= initGuiApp();
	}
	else
	{
		//	console version
		_app	= new QCoreApplication(argc, argv);
		if (_app)
			init	= initConsoleApp();
	}

	if (NULL == _app)
	{
		fprintf(stderr, "%s: fatal error in initialzing.\n", argv[0]);
		return false;
	}
	if (false == init)
	{
		delete _app;
		_app	= NULL;
		return false;
	}
	*/
	
	return true;
}

